package main

import "fmt"

type Employee struct {
	firstName      string
	lastName       string
	employeeNumber int
	salary         int
	hired          bool
}

func (e *Employee) promote(raiseAmount int) {
	e.setSalary(e.getSalary() + raiseAmount)
}

func (e *Employee) demote(demeritAmount int) {
	e.setSalary(e.getSalary() - demeritAmount)
}

func (e Employee) display() {
	fmt.Print("Name: ", e.getFirstName(), " ", e.getLastName(), "\n")
	fmt.Print("Employee Number: ", e.getEmployeeNumber(), "\n")
	fmt.Print("Salary: ", e.getSalary(), "\n")
	if e.isHired() {
		fmt.Println("Current Employee")
	} else {
		fmt.Println("Former Employee")
	}
}

func (e *Employee) hire() {
	e.hired = true
}

func (e Employee) fire() {
	e.hired = false
}

func (e *Employee) setFirstName(firstName string) {
	e.firstName = firstName
}

func (e Employee) getFirstName() string {
	return e.firstName
}

func (e *Employee) setLastName(lastName string) {
	e.lastName = lastName
}

func (e Employee) getLastName() string {
	return e.lastName
}

func (e *Employee) setEmployeeNumber(employeeNumber int) {
	e.employeeNumber = employeeNumber
}

func (e Employee) getEmployeeNumber() int {
	return e.employeeNumber
}

func (e *Employee) setSalary(salary int) {
	e.salary = salary
}

func (e Employee) getSalary() int {
	return e.salary
}

func (e Employee) isHired() bool {
	return e.hired
}
